package com.msk.common.wechatV3.util;

import java.text.SimpleDateFormat;
import java.util.Date;

public class MakeOrderNum {
	  /**
     * 订单号生成计数器
     */
    private static long orderNumCount = 0L;
    /**
     * 每毫秒生成订单号数量最大值
     */
    private static int maxPerMSECSize=1000;

	public static synchronized String getOrderNo() {
		// 最终生成的订单号
        String finOrderNum = "";
		 long nowLong = Long.parseLong(new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
         // 计数器到最大值归零，可扩展更大，目前1毫秒处理峰值1000个，1秒100万
         if (orderNumCount > maxPerMSECSize) {
             orderNumCount = 0L;
         }
         //组装订单号
         String countStr=maxPerMSECSize +orderNumCount+"";
         finOrderNum=nowLong+countStr.substring(1);
         orderNumCount++;
        return finOrderNum;
    }

    public static void main(String[] args) {
        System.out.println(getOrderNo());
    }
}
